
class Carro:
    def __init__(self, modelo, marca, cor=None, posicao=None):
        self.__modelo = modelo
        self.__marca = marca
        self.__cor = cor
        self.__posicao = posicao

    def getModelo(self):
        return self.__modelo
    
    def getMarca(self):
        return self.__marca
    
    def getCor(self):
        return self.__cor
    
    def getPosicao(self):
        return self.__posicao

    def setModelo(self, novoModelo):
        self.__modelo = novoModelo

    def setMarca(self, novaMarca):
        self.__marca = novaMarca

    def setCor(self, novaCor):
        self.__cor = novaCor

    def setPosicao(self, novaPosicao):
        self.__posicao = novaPosicao

    def frente(self,movimento):
        posicao = self.__posicao.getVertical()
        limiteSuperior = self.__posicao.getLimiteVerticalSuperior()
        
        posicaoFuturo = posicao - movimento
        if posicaoFuturo > limiteSuperior:
            self.__posicao.setVertical(posicaoFuturo)
            return posicaoFuturo
        else:
            return posicao


    def tras(self,movimento):
        posicao = self.__posicao.getVertical()
        limiteInferior = self.__posicao.getLimiteVerticalInferior()
        posicaoFuturo = posicao + movimento
        if posicaoFuturo < limiteInferior:
            self.__posicao.setVertical(posicaoFuturo)
            return posicaoFuturo
        else:
            return posicao


    def esquerda(self,movimento):
        posicao = self.__posicao.getHorizontal()
        limiteEsquerda = self.__posicao.getLimiteHorizontalEsquerda()
        posicaoFuturo = posicao - movimento
        if posicaoFuturo > limiteEsquerda:
            self.__posicao.setHorizontal(posicaoFuturo)
            return posicaoFuturo
        else:
            return posicao

    def direita(self,movimento):
        posicao = self.__posicao.getHorizontal()
        limiteDireita = self.__posicao.getLimiteHorizontalDireita()
        posicaoFuturo = posicao + movimento
        if posicaoFuturo < limiteDireita:
            self.__posicao.setHorizontal(posicaoFuturo)
            return posicaoFuturo
        else:
            return posicao



        

        
